package iface

import "reflect"

// BeanFactory 对象工厂接口
// 提供获取ioc容器对象的方法
type BeanFactory interface {

	// GetBeanByName 根据Bean名称获取Bean对象
	GetBeanByName(beanName string) any

	// GetBean 根据Bean名称和其反射类型获取Bean对象
	GetBean(beanName string, refType reflect.Type) any

	// GetBeanByType 根据Bean类型获取Bean对象
	// for example: GetBeanByType((*Struct)(nil))
	GetBeanByType(beanType any) any

	// GetBeanByRt 根据Bean反射类型获取Bean对象
	GetBeanByRt(refType reflect.Type) any

	// GetBeans 根据Bean反射类型获取Bean对象列表
	GetBeans(refType reflect.Type) []any
}
